# DropDown 下拉菜单
# 基础用法
activeColor 为选中字体的颜色。 children 是一个 MillDropDownItem 列表,代表每一项。
MillDropDownItem 的字段:
- key 是唯一标识,不能重复。 onChange 回调的时候会返回 key 来标记操作的是哪一项
- options 传递一个列表,用来渲染选项
MillDropDown(
onChange: (Key key, value) {
print(key);
print(value);
},
activeColor: Color(0xffee0a24),
children: [
MillDropDownItem(key: ValueKey('filter'), options: _list1),
MillDropDownItem(key: ValueKey('order'), options: _list2),
MillDropDownItem(key: ValueKey('filter3'), options: _list2),
],
),
# 自定义下拉内容
MillDropDownItem 的 child 设置 后 options 失效,下拉框内为 child 自定义的内容。 MillDropDownItem 的 title 作为导航栏中展示的内容。
MillDropDown(
activeColor: Color(0xffee0a24),
children: [
MillDropDownItem(key: ValueKey('filter'), options: _list1),
MillDropDownItem(key: ValueKey('order'), options: _list2),
MillDropDownItem(key: ValueKey('filter3'), options: _list2),
MillDropDownItem(
title: '自定义列',
child: Container(
height: 100,
alig
child: Text('自定义列'),
),
),
],
),
# 仅作为导航存在
MillDropDownItem 的 builder 传递后 child 和 options 都失效。将作为 nav 存在,不会出现下拉菜单, onTap 可设置点击回调。
调用方式如下:
MillDropDown(
activeColor: Color(0xffee0a24),
children: [
MillDropDownItem(key: ValueKey('filter'), options: _list1),
MillDropDownItem(key: ValueKey('order'), options: _list2),
MillDropDownItem(
title: title,
child: Container(
child: Text(title),
),
),
MillDropDownItem(
builder: (BuildContext context) {
return MillDropDownCustomItem(
onTap: () {
MillToast.success(context, text: 'success');
},
child: Container(
alignment: Alignment.center,
child: Text('自定义item'),
),
);
},
),
],
),
# disabled
在 MillDropDownItem 里设置 disabled 可以使 nav 不能点击。在 options 里设置 disabled。下拉选项不能点击。
List list = [
{
'name': '价格降序',
'id': 1,
},
{
'name': '价格升序',
'id': 2,
},
{
'name': '点击升序',
'id': 3,
'disabled': true,
}
];
MillDropDown(
activeColor: Color(0xffee0a24),
children: [
MillDropDownItem(
key: ValueKey('filter'),
options: list,
),
MillDropDownItem(
key: ValueKey('order'),
options: list,
disabled: true,
),
MillDropDownItem(
title: title,
child: Container(
child: Text(title),
),
),
MillDropDownItem(
builder: (BuildContext context) {
return MillDropDownCustomItem(
onTap: () {
print('sss');
},
child: Container(
alignment: Alignment.center,
child: Text(title2),
),
);
},
),
],
),
# 自定义对齐方式和间距
mainAxisAlignment: 字段设置对齐方式。 padding: 设置每项的间隔。 注意:将 flex 设置为 0。
MillDropDown(
activeColor: Color(0xffee0a24),
mainAxisAlignment: MainAxisAlignment.start,
children: [
MillDropDownItem(
flex: 0,
padding: EdgeInsets.symmetric(horizontal: 8),
key: ValueKey('filter'),
options: _list1,
),
MillDropDownItem(
flex: 0,
padding: EdgeInsets.symmetric(horizontal: 8),
key: ValueKey('order'),
options: _list2,
),
MillDropDownItem(
flex: 0,
padding: EdgeInsets.symmetric(horizontal: 8),
title: title,
child: Container(
child: Text(title),
),
),
MillDropDownItem(
flex: 0,
padding: EdgeInsets.symmetric(horizontal: 8),
builder: (BuildContext context) {
return MillDropDownCustomItem(
onTap: () {
print('sss');
},
child: Container(
alignment: Alignment.center,
child: Text(title2),
),
);
},
),
],
),
# Attributes
字段名称 | 说明 | 类型 | 默认值 |
---|---|---|---|
onChange | change 回调 | Function | |
children | 列表 | List<MillDropDownItem> | |
activeColor | 选中时字体颜色 | Color | Color(0xff1989fa) |
bgColor | 背景色 | Color | Color(0xffffffff) |
activeBgColor | 下拉框出现时背景色 | Color | Color(0xffffffff) |
direction | 方向, | String (down 、up) | down |
mainAxisAlignment | 选项按钮的对齐方式 | MainAxisAlignment | MainAxisAlignment.spaceAround |
optionRadius | options 框的圆角 | double | 0 |
navHeight | 高度 | double | 60 |
mainAxisAlignment | 对齐方式 | MainAxisAlignment | MainAxisAlignment.spaceAround |
# MillDropDownItem
# Attributes
字段名称 | 说明 | 类型 | 默认值 |
---|---|---|---|
child | 展开项的自定义元素 | Widget | |
options | 展开项选项 | List | |
defalutValue | 选项默认值 | ||
builder | 非下拉选项设置 | MillDropDownBuilder | |
title | 选项展示的title | String | |
disabled | 禁用该选项 | bool | false |
maxHeight | 选项下拉框的高度 | double | 190 |
flex | 选项按钮 expanded 的占比 | int | 1 |
padding | 选项按钮的 padding | ||
fontSize | 字体大小 | double | 14 |